package co.gov.medellin.ssti.sub.model.dao;

import java.util.Collection;
import java.util.List;

import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.vo.CondicionConsultaVO;
import co.gov.medellin.ssti.sub.model.vo.RepAtributoVO;
import co.gov.medellin.ssti.sub.model.vo.RepDetBOTVO;
import co.gov.medellin.ssti.sub.model.vo.ReporteDetVO;

public interface RepDetBOTDAO {
	/**
	 * 
	 * @param atributosGenericos
	 * @param atributosEspecificos
	 * @param filtros
	 * @param criteria
	 * @return
	 * 
	 */
	Collection<ReporteDetVO> findReporte(
			List<RepAtributoVO> atributosGenericos,
			List<RepAtributoVO> atributosEspecificos,
			List<CondicionConsultaVO> filtros, RepDetBOTVO criteria)
			throws DAOException;

	/**
	 * 
	 * @param atributosGenericos
	 * @param atributosEspecificos
	 * @param filtros
	 * @param criteria
	 * @return
	 * 
	 */
	Collection<ReporteDetVO> findReporteConGestor(
			List<RepAtributoVO> atributosGenericos,
			List<RepAtributoVO> atributosEspecificos,
			List<CondicionConsultaVO> filtros, RepDetBOTVO criteria)
			throws DAOException;

	/**
	 * 
	 * @param filtros
	 * @param criteria
	 * @return
	 * 
	 */
	Integer findCantidadBeneficiarios(List<CondicionConsultaVO> filtros,
			RepDetBOTVO criteria);

	/**
	 * 
	 * @param filtros
	 * @param criteria
	 * @return
	 * 
	 */
	Long findValorTotal(List<CondicionConsultaVO> filtros, RepDetBOTVO criteria);

	/**
	 * 
	 * @param criteria
	 * @return
	 * 
	 */
	RepDetBOTVO findFilters(RepDetBOTVO criteria);
}
